// 身份信息相关校验 - 按照validator.js标准

// 是否为身份证号
export function isIdentityCard(str) {
  if (!str) return true
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  return reg.test(str)
}

// 是否为信用卡号
export function isCreditCard(str) {
  if (!str) return true
  // 移除空格和连字符
  const cleaned = str.replace(/[\s-]/g, '')
  // 检查是否为13-19位数字
  if (!/^\d{13,19}$/.test(cleaned)) return false
  // Luhn算法校验
  let sum = 0
  let isEven = false
  for (let i = cleaned.length - 1; i >= 0; i--) {
    let digit = parseInt(cleaned[i])
    if (isEven) {
      digit *= 2
      if (digit > 9) digit -= 9
    }
    sum += digit
    isEven = !isEven
  }
  return sum % 10 === 0
}

// 是否为护照号
export function isPassportNumber(str) {
  if (!str) return true
  const reg = /^[A-Za-z0-9]{6,9}$/
  return reg.test(str)
}